function $(id){
    return document.getElementById(id);
}

function creatediv(className){
    var div = document.createElement("div");
    div.className = className;
    return div;
}

var clock = null;
var state = 0;
var speed = 6;
var flag = false;

function start(){
    if(!flag){
        init();
    }else{
        alert('游戏已经开始，无需再次点击！');
    }
}
function init(){
    flag = true;
    for(var i=0;i<4;i++){
        createrow();
    }

    $('main').onclick = function(ev){
        ev = ev||event
        judge(ev);
    }
    clock = window.setInterval('move()',30);
}

function createrow(){
    var con = $('con');
    var row = creatediv("row");
    var arr = createcell();

    con.appendChild(row);

    for(var i = 0;i<4;i++){
        row.appendChild(creatediv(arr[i]));
    }
    if(con.firstChild == null){
        con. appendChild(row);
    }else{
        con.insertBefore(row,con.firstChild);
    }
}

function delrow(){
    var con = $('con');
    if(con.childNodes.length == 6){
        con.removeChild(con.lastChild);

    }
}

function createcell(){
    var temp = ['cell','cell','cell','cell',];
    var i = Math.floor(Math.random()*4);
    temp[i] = 'cell black';
    return temp;
}

function move(){
    var con = $('con');
    var top = parseInt(window.getComputedStyle(con,null)['top']);

    if(speed+top>0){
        top=0;
    }else{
        top+=speed;
    }

    con.style.top = top+'px';
    over();
    if(top == 0){
        createrow();
        con.style.top = '-101px';
        delrow();
    }


}

function speedup(){
    speed += 2;
    if(speed == 20){
        alert('你超神了！');
    }
}

function over(){
    var rows = con.childNodes;
    if((rows.length == 5)&&(rows[rows.length-1].pass!==1)){
        fail();
    }
    for(let i=0; i<rows.length; i++){
        if(rows[i].pass1 == 1){
            fail();
        }
    }
}

function fail(){
    clearInterval(clock);
    flag = false;
    confirm('你的最终得分 '+parseInt($('score').innerHTML));
    var con = $('con');
    con.innerHTML = "";
    $('score').innerHTML = 0;
    con.style.top = '-408px';
}

function judge(ev){
    if(ev.target.className.indexOf('black')==-1&&ev.target.className.indexOf('cell')!=-1){
        ev.target.parentNode.pass1 = 1;

    }
    if(ev.target.className.indexOf('black')!=-1){
        ev.target.className = 'cell';
        ev.target.parentNode.pass = 1;
        score();
    }
}

function score(){
    var newscore = parseInt($('score').innerHTML)+1;
    $('score').innerHTML = newscore;
    if(newscore%10 == 0){
        speedup();
    }

}